package com.ld.common.util.notice;

import com.ld.admin.model.system.NoticeActionModel;
import com.ld.common.util.notice.service.NoticeSendService;
import com.ld.shieldsb.common.core.model.Result;

import lombok.extern.slf4j.Slf4j;

/**
 * 发送通知工具类（方便项目调用，不同项目中可修改NoticeSendService的具体实现类）
 * 
 * @ClassName NoticeUtil
 * @author <a href="mailto:donggongai@126.com" target="_blank">吕凯</a>
 * @date 2019年1月29日 下午2:13:27
 *
 */
@Slf4j
public class NoticeUtil {
    private static NoticeSendService noticeSendService = null;

    public static void registerService(NoticeSendService noticeSendServiceImpl) {
        noticeSendService = noticeSendServiceImpl;
    }

    /**
     * 发送通知
     * 
     * @Title sendNotice
     * @author 吕凯
     * @date 2019年1月29日 下午2:12:27
     * @param noticActionModel
     * @param content
     *            void
     */
    public static Result sendNotice(NoticeActionModel noticActionModel, String content) {
        Result result = new Result();
        if (noticeSendService == null) {
            log.error("发送通知服务noticeSendService未实例化，请增加实现类并调用registerService(NoticeSendService noticeSendServiceImpl)方法");
            return result;
        }
        return noticeSendService.sendNotice(noticActionModel, content);
    }

    /**
     * 直接发送通知给某个账号
     * 
     * @Title sendNotice
     * @author 吕凯
     * @date 2019年8月28日 下午2:29:09
     * @param title
     * @param content
     * @param noticeType
     * @param sendTo
     * @return Result
     */
    public static Result sendNotice(String title, String content, String noticeType, String sendTo) {
        return NoticeSendService.sendNotice(title, content, noticeType, sendTo);
    }

    public static NoticeSendService getNoticeSendService() {
        return noticeSendService;
    }

    public static void shutdown() {
        noticeSendService.shutdown();
    }

}
